package com.hamizhong.iflowers.service.impl;

import java.util.List;

import org.springframework.beans.BeanUtils;

import com.hamizhong.iflowers.db.dao.hibernate.IGoodsDao;
import com.hamizhong.iflowers.db.dao.hibernate.IGoodsTargetMapDao;
import com.hamizhong.iflowers.db.dao.hibernate.ITargetDao;
import com.hamizhong.iflowers.db.entity.Goods;
import com.hamizhong.iflowers.db.entity.GoodsTargetMap;
import com.hamizhong.iflowers.db.entity.Target;
import com.hamizhong.iflowers.service.IGoodsTargetMapService;
import com.hamizhong.iflowers.service.base.MyBaseService;
import com.hamizhong.iflowers.utils.MyErrorMsgConstants;
import com.hamizhong.iflowers.web.dto.IOPResultDto;
import com.hamizhong.iflowers.web.vo.GoodsTargetMapVO;
import com.hamizhong.iflowers.web.vo.IObjectVO;

public class GoodsTargetMapServiceImpl extends MyBaseService implements IGoodsTargetMapService {
	private IGoodsDao iGoodsDao = null;
	private ITargetDao iTargetDao = null;
	private IGoodsTargetMapDao iGoodsTargetMapDao = null;
	
	public IGoodsDao getiGoodsDao() {
		return iGoodsDao;
	}
	public void setiGoodsDao(IGoodsDao iGoodsDao) {
		this.iGoodsDao = iGoodsDao;
	}
	public ITargetDao getiTargetDao() {
		return iTargetDao;
	}
	public void setiTargetDao(ITargetDao iTargetDao) {
		this.iTargetDao = iTargetDao;
	}
	public IGoodsTargetMapDao getiGoodsTargetMapDao() {
		return iGoodsTargetMapDao;
	}
	public void setiGoodsTargetMapDao(IGoodsTargetMapDao iGoodsTargetMapDao) {
		this.iGoodsTargetMapDao = iGoodsTargetMapDao;
	}
	public IOPResultDto<IObjectVO> addGoodsTargetMaps(List<GoodsTargetMapVO> goodsTargetMapVOList) {
		IOPResultDto<IObjectVO> dto = new IOPResultDto<IObjectVO>();
		try {
			for (GoodsTargetMapVO goodsTargetMapVO : goodsTargetMapVOList) {
				GoodsTargetMap goodsTargetMap = new GoodsTargetMap();
				BeanUtils.copyProperties(goodsTargetMapVO, goodsTargetMap);
				Goods goods = iGoodsDao.findById(goodsTargetMapVO.getGoodsVO().getGoodsId());
				goodsTargetMap.setGoods(goods);
				Target target = iTargetDao.findById(goodsTargetMapVO.getTargetVO().getTargetId());
				goodsTargetMap.setTarget(target);
				iGoodsTargetMapDao.add(goodsTargetMap);
			}
			dto.setSuccess(true);
		} catch (Exception e) {
			e.printStackTrace();
			logger.error("【addGoodsTargetMaps】"+MyErrorMsgConstants.FAILED_TO_ADD_OPERATE);
			dto.setErrorMSG(MyErrorMsgConstants.FAILED_TO_ADD_OPERATE);
			dto.setSuccess(false);
		}
		return dto;
	}
	
	public IOPResultDto<IObjectVO> deleteGoodsTargetMaps(List<GoodsTargetMapVO> goodsTargetMapVOList) {
		IOPResultDto<IObjectVO> dto = new IOPResultDto<IObjectVO>();
		try {
			for (GoodsTargetMapVO goodsTargetMapVO : goodsTargetMapVOList) {
				GoodsTargetMap goodsTargetMap = new GoodsTargetMap();
				BeanUtils.copyProperties(goodsTargetMapVO, goodsTargetMap);
				Goods goods = iGoodsDao.findById(goodsTargetMapVO.getGoodsVO().getGoodsId());
				goodsTargetMap.setGoods(goods);
				Target target = iTargetDao.findById(goodsTargetMapVO.getTargetVO().getTargetId());
				goodsTargetMap.setTarget(target);
				iGoodsTargetMapDao.delete(goodsTargetMap);
			}
			dto.setSuccess(true);
		} catch (Exception e) {
			e.printStackTrace();
			logger.error("【deleteGoodsTargetMaps】"+MyErrorMsgConstants.FAILED_TO_DELETE_OPERATE);
			dto.setErrorMSG(MyErrorMsgConstants.FAILED_TO_DELETE_OPERATE);
			dto.setSuccess(false);
		}
		return dto;
	}
	
}
